{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "43e9a279",
   "metadata": {},
   "source": [
    "# Python进阶-ML模型应用3_Polynomial (Linear) Regression多项式线性回归 \n",
    "\n",
    "\n",
    "Linear Regression线性回归公式：\n",
    "\n",
    "y=p+p<sub>1</sub> X<sub>1</sub> \n",
    "\n",
    "MultipleLinear Regression多元线性回归公式：\n",
    "\n",
    "y=p+p<sub>1</sub>X<sub>1</sub>+p<sub>2</sub>X<sub>2</sub>+p<sub>3</sub>X<sub>3</sub>+...+p<sub>n</sub>X<sub>n</sub> \n",
    "\n",
    " Polynomial Linear Regression多项式回归公式：\n",
    "\n",
    "y=p+p<sub>1</sub>X<sub>1</sub>+p<sub>2</sub>X<sup>2</sup>+p<sub>3</sub>X<sup>3</sup>+...+p<sub>n</sub>X<sup>n</sup>\n",
    "\n",
    "多项式线性回归是一种扩展了线性回归模型的方法，通过引入多项式函数来拟合非线性数据。它是一个强大的工具，可以在多种实际问题中使用。多项式回归模型是线性回归模型的一种，此时回归函数关于回归系数是线性的。由于任一函数都可以用多项式逼近，因此多项式回归有着广泛应用。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "26fc3d79",
   "metadata": {},
   "source": [
    "## 应用案例（一）年龄与身高关系数据分析"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "efcf42aa",
   "metadata": {},
   "source": [
    "### 1、导入函数库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "9eeb873d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import necessary libraries \n",
    "import pandas as pd \n",
    "import numpy as np \n",
    "import matplotlib.pyplot as plt \n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1f671622",
   "metadata": {},
   "source": [
    "### 2、加载数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "e3fb7048",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import the Height Weight Dataset \n",
    "data = pd.read_excel('./kaggle-data/age-height.xlsx') "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "b466f77c",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>Height</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10</td>\n",
       "      <td>138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>11</td>\n",
       "      <td>138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>12</td>\n",
       "      <td>138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>13</td>\n",
       "      <td>139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>14</td>\n",
       "      <td>139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>66</th>\n",
       "      <td>76</td>\n",
       "      <td>204</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>67</th>\n",
       "      <td>77</td>\n",
       "      <td>205</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>68</th>\n",
       "      <td>78</td>\n",
       "      <td>206</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>69</th>\n",
       "      <td>79</td>\n",
       "      <td>207</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>70</th>\n",
       "      <td>80</td>\n",
       "      <td>208</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>71 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    Age  Height\n",
       "0    10     138\n",
       "1    11     138\n",
       "2    12     138\n",
       "3    13     139\n",
       "4    14     139\n",
       "..  ...     ...\n",
       "66   76     204\n",
       "67   77     205\n",
       "68   78     206\n",
       "69   79     207\n",
       "70   80     208\n",
       "\n",
       "[71 rows x 2 columns]"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5b126fa2",
   "metadata": {},
   "source": [
    "### 3、划分数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "a28dbd01",
   "metadata": {},
   "outputs": [],
   "source": [
    "#Store the data in the form of dependent and independent variables separately\n",
    "X = data.iloc[:, 0:1] #全部行，第0列\n",
    "#X = data.iloc[:, 0:-1].values#如果数据集过大，可以用-1表示到最后一行或最后一列\n",
    "y = data.iloc[:, 1]#全部行，第1列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "f12eb191",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>66</th>\n",
       "      <td>76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>67</th>\n",
       "      <td>77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>68</th>\n",
       "      <td>78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>69</th>\n",
       "      <td>79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>70</th>\n",
       "      <td>80</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>71 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    Age\n",
       "0    10\n",
       "1    11\n",
       "2    12\n",
       "3    13\n",
       "4    14\n",
       "..  ...\n",
       "66   76\n",
       "67   77\n",
       "68   78\n",
       "69   79\n",
       "70   80\n",
       "\n",
       "[71 rows x 1 columns]"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "f7f50dde",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     138\n",
       "1     138\n",
       "2     138\n",
       "3     139\n",
       "4     139\n",
       "     ... \n",
       "66    204\n",
       "67    205\n",
       "68    206\n",
       "69    207\n",
       "70    208\n",
       "Name: Height, Length: 71, dtype: int64"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e9dc4168",
   "metadata": {},
   "source": [
    "### 4、模型训练与预测"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "93999983",
   "metadata": {},
   "source": [
    "#### 拆分数据集（训练集、测试集）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "b198ca5d",
   "metadata": {},
   "outputs": [],
   "source": [
    "#Split the Dataset into Training and Test Dataset\n",
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ed234fd8",
   "metadata": {},
   "source": [
    "#### （1）使用一次线性回归模型进行预测和评估"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "9b7e7280",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8727873738671587\n"
     ]
    }
   ],
   "source": [
    "#Fit the Simple Linear Regression Model\n",
    "from sklearn.linear_model import LinearRegression\n",
    "LinReg = LinearRegression()\n",
    "LinReg.fit(X_train, y_train)\n",
    "#用r2得分进行评估\n",
    "from sklearn.metrics import r2_score\n",
    "score1=r2_score(y_test,LinReg.predict(X_test))\n",
    "print(score1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "410c58e3",
   "metadata": {},
   "source": [
    "#### 一次线性回归模型图像"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "48137b71",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEWCAYAAACJ0YulAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAApr0lEQVR4nO3de5xcdX3/8dc7yRKyCQmQBAy5bYQQBKIIK+DtVyQqSLl4q00aKf7URjH+BNRaMVZAu3209QJUxRpLBCSAqFgB0YLRQrEIDYrmApEAuSxBkgAJkIVcP78/5uxmdubM7uxmzlx238/HYx878/2eOeezm8185nyvigjMzMwAhtQ6ADMzqx9OCmZm1sVJwczMujgpmJlZFycFMzPr4qRgZmZdnBSsrkl6s6RVtY5jIJC0QtIptY7D6puTgtUFSWskvbWwPCL+OyJm1CKmQpIulbRT0ouStkj6H0mvr3Vc5YqIYyLiv2odh9U3JwWzFJKGlaj6fkSMAsYBvwJ+kMG1Jcn/N60m/IdndU3SKZLa856vkfRpSX+QtFXS9yXtn1d/pqSH8j7Jvzqv7rOSHpP0gqSVkt6VV/cBSb+WdLmkZ4FLe4orInYBi4GJksYn5xgj6WpJT0l6UtI/SBqa1A2V9FVJmyU9IenjkqIz+Uj6L0ltkn4NdACvlHSUpLskPStplaT35cV7RvIzvJBc69NJ+ThJtyc//7OS/rszweTfjUkaLukKSRuSryskDc//nUv6lKSNyc/zf/v3L2iNxknBGtH7gNOBacCrgQ8ASDoeWAR8BBgLfBu4tfPNDngMeDMwBrgMuF7ShLzzngQ8DhwCtPUUgKT9gL8GngGeS4qvBXYBRwCvBd4OfDip+xvgHcBxwPHAO1NOey4wDzgA2ATcBdyQxDMHuErSMcmxVwMfiYgDgGOBXyblnwLagfHAocDngLS1bBYAJyfxvAY4Efh8Xv0ryP2eJgIfAr4p6aAefiU2QDgpWCP614jYEBHPAreRe2OD3BvvtyPi/ojYHRHXAtvJvfkRET9IXrcnIr4PPEruzbDThoj4ekTsioiXSlz7fZK2AC8l13tvROySdCi5N/0LI2JbRGwELgdmd74OuDIi2iPiOeCfUs59TUSsSO5CTgfWRMR3k3h+C/wIeG9y7E7gaEmjI+K5pL6zfAIwNSJ2Jn0yaUlhLvDFiNgYEZvIJclz8+p3JvU7I+IO4EWgLvp2LFtOCtaI/pT3uAMYlTyeCnwqaTrZkrx5TwYOA5D013lNS1vIfcIel3eu9WVc++aIOJDcp/DlwAl5124Cnso7/7fJfconiSH//GnXyi+bCpxU8LPMJfcJHuA9wBnAWkl353V4fxlYDdwp6XFJny3xcxwGrM17vjYp6/RMkpw65f+ebQAr1Zlm1ojWA20RUdT0I2kq8B1gFnBfROyW9BCgvMPKXjI4IjZL+gjwv5JuSK69HRhX8Gba6SlgUt7zyWmnLfhZ7o6It5W4/v8C50hqAj4O3AxMjogXyDUhfSppavqVpP+NiCUFp9hALvGsSJ5PScpskPOdgtWTJkn753319UPLd4CPSjopGcEzUtKfSzoAGEnuTXcTQNJxeuy+BBsRjwD/CXwmIp4C7gS+Kmm0pCGSDpf0Z8nhNwMXSJoo6UDg73o5/e3AkZLOldSUfL1O0qsk7SdprqQxEbETeB7YnfxcZ0o6QpLyynennP9G4POSxksaB3wBuH5ffh82MDgpWD25g1xbfefXpX15cUQsJdfO/w1ynb+rSTqhI2Il8FXgPuBpYCbw6wrE/GVgnqRDyHU87wesTK7/Q3Lt+5BLWHcCfwB+R+5n3UX6GzbJJ/63k+uT2ECuyeyfgc5O83OBNZKeBz4KvD8pnw78glwfwH3AVSXmJvwDsDSJZxnw26TMBjl5kx2z6pP0DuDfImJqrWMxy+c7BbMqkDQimVswTNJE4BLgx7WOy6yQ7xTMqkBSM3A3cBS5prGfAhdExPM1DcysgJOCmZl1cfORmZl1aeh5CuPGjYuWlpZah2Fm1lAefPDBzRExPq2uoZNCS0sLS5curXUYZmYNRdLaUnVuPjIzsy5OCmZm1sVJwczMujgpmJlZFycFMzPr4qRgZlYnFi9bTMsVLQy5bAgtV7SweNniqsfQ0ENSzcwGisXLFjPvtnl07OwAYO3Wtcy7bR4Ac2fOrVocvlMwM6sDC5Ys6EoInTp2drBgyYKqxuGkYGZWI/nNRWu3ps8nW7d1XVVjcvORmVkNFDYXlTJlzJQqRZTjpGBmViWLly1mwZIFrNu6jiEawu5I3XivS3NTM22zirYcz5STgplZFRTeGfSUEISYMmYKbbPaqtrJDE4KZmZVkdaRnGbqmKmsuXBN9gGV4I5mM7MqKKfDuBbNRYWcFMzMqqBUh/FQDUWIqWOmsvCshVVvLirk5iMzsypom9VWNNqouam5LhJBPt8pmJlVwdyZc1l41kKmjplaV3cGhRQRtY6h31pbW8M7r5mZ9Y2kByOiNa3OdwpmZtbFScHMzLpklhQkTZb0K0kPS1oh6YKk/GBJd0l6NPl+UN5rLpa0WtIqSadlFZuZmaXL8k5hF/CpiHgVcDIwX9LRwGeBJRExHViSPCepmw0cA5wOXCVpaIbxmZlZgcySQkQ8FRG/TR6/ADwMTATOAa5NDrsWeGfy+BzgpojYHhFPAKuBE7OKz8zMilWlT0FSC/Ba4H7g0Ih4CnKJAzgkOWwisD7vZe1JmZlZ3auHXdMqIfPJa5JGAT8CLoyI5yWVPDSlrGi8rKR5wDyAKVOqu6SsmVmaetk1rRIyvVOQ1EQuISyOiFuS4qclTUjqJwAbk/J2YHLeyycBGwrPGRELI6I1IlrHjx+fXfBmZmWql13TKiHL0UcCrgYejoiv5VXdCpyXPD4P+Ele+WxJwyVNA6YDD2QVn5lZpZRa7K7au6ZVQpbNR28EzgWWSXooKfsc8E/AzZI+BKwD/gIgIlZIuhlYSW7k0vyIXnagMDOrA1PGTEndTrPau6ZVQmZJISLuJb2fAGBWide0AbVdN9bMrI9KLXZX62Ww+8Mzms3M9lGjLHZXDi+IZ2Y2yHhBPDMzK4uTgpmZdXFSMDPro4EyezmNt+M0M+uDgTR7OY3vFMzM+mAgzV5O46RgZtYHA2n2chonBTOzPig1S7kRZy+ncVIwM+uDtlltNDc1dytr1NnLaZwUzMz6YCDNXk7jGc1mZg1ixw6YNQvuvRdGj4atW/t3Hs9oNjNrYBFw/vkwfHguIQBcc0021/I8BTOzOnb44fD443uf/9Vfwfe+B0My+kjvOwUzszo0fz5IexPC2LHQ0QGLF2eXEMBJwcysrvzky3/kSP2Rq67aW/a738HmzTBiRPbXd1IwM6sDy+58CiTO+cwM/sgMAK6/PtefcNxx1Ysjyz2aF0naKGl5XtlrJN0naZmk2ySNzqu7WNJqSasknZZVXGZmvanmgnfPrO9guY5l5mmHdZV988yfEQFzazDKNcs7hWuA0wvK/h34bETMBH4M/C2ApKOB2cAxyWuukjQ0w9jMzFJ1Lni3dutaguha8K7SiWH39l0gMXbKSI5lBQBfGnclRDD/tsK3zurJLClExD3AswXFM4B7ksd3Ae9JHp8D3BQR2yPiCWA1cGJWsZmZlVKNBe92aD+G7t/U9XwZxxK79/D3mz5RsWv0V7X7FJYDZyeP/wKYnDyeCKzPO649KSsiaZ6kpZKWbtq0KbNAzWxwynTBOwkk9mNnV9GLT73AzFiGhmjfz18B1U4KHwTmS3oQOADYkZSn/TZSp1pHxMKIaI2I1vHjx2cUppkNVlkseLfqhDm5hJBn7S8ehQhGvWJUv8+bhaomhYh4JCLeHhEnADcCjyVV7ey9awCYBGyoZmxmNjgVdiqfMf2Mii14t/QT14HEjN/e1FW2ct4VEMHUWUfsa+iZqGpSkHRI8n0I8Hng35KqW4HZkoZLmgZMBx6oZmxmNvikdSpf+/trOe815+3TgneP3bYSJFq/fl5X2RPT3gIRHP3tC7L4USoms2UuJN0InAKMk9QOXAKMkjQ/OeQW4LsAEbFC0s3ASmAXMD8idmcVm5kZlO5UvuPRO1hz4Zo+n2/bxm2MPHQUhxdWRDCt31FWV2ZJISLmlKi6ssTxbcDAWJDczBpCRTuVJUYWljXgKtSe0Wxmg1ZFOpWTEUX5Xtq8rSETAjgpmNkgtk+7qKUkg8fveAQiGDG2ucSL6p+TgpkNWv3ZRe0PJ/9NUTL4n/mLIYJXvmNG1iFnzjuvmZmV4ZGv3M5Rf3tWt7InxxzNxC0rahRR//W085o32TEz68GzK57i4GMP46jCioj0ZRcanJOCmVmKPbv2MKRpKAcXVjRw60o53KdgZlZIYkhT94Wad3XsGPAJAZwUzMz2ShlR9PSvV0MEw0Y0lXjRwOKkYGaWkgxWffjLEMGhbyianzygOSmY2YDW0y5qa86cX5QMnh3TAhHM+M6nqxxpfXBHs5kNWJ0L3nWub9S5i1rTknW876LP0VL4gojijuVBxknBzAaswgXvRrzUxLZLO4DPdT9wEHQgl8tJwcwGrPyF7eJSIG/HM4DYtRsNdSt6Pv82zGzAmjJmCnFpZ0LY6w0XHQMRTggpfKdgZgOTxJqCovNPPIrrzlnHwrMurkVEDcFJwcwGlD1DhzFkT/EeXUMuFVPGvMTCWX3bRW2wcVIwswFhzQWX0/KvnyxuE086kfdUPaLGlFmDmqRFkjZKWp5Xdpyk30h6SNJSSSfm1V0sabWkVZJOyyouMxtYXli5HiRa/vWT3cpbLp/K4j9cX6OoGleWdwrXAN8Arssr+xfgsoj4maQzkuenSDoamA0cAxwG/ELSkd6n2cxKiT25juIDCsp1afIgmZMAuLmoDzK7U4iIe4BnC4uB0cnjMcCG5PE5wE0RsT0ingBWAydiZpZGKho5dPyC6XsTQqJjZwcLliyoXlwDQLXHY10IfFnSeuArQOcQgInA+rzj2pOyIpLmJU1PSzdt2pRlrGZWb1LWKFr7+e9ABA81rU59Sf5cBetdtZPC+cBFETEZuAi4OilXyrGpUwwjYmFEtEZE6/jx4zMK08zqSkoy6Bg5DiKY+qUPA7k5CWlKlVu6aieF84Bbksc/YG8TUTswOe+4SextWjKzQeqpN7ynKBkAEEHzi91bCtpmtdHc1NytrLmpmbZZbVmGOOBUOylsAP4seXwq8Gjy+FZgtqThkqYB04EHqhybmdWJTT/5H5CYcN8t3SsiSq5TNHfmXBaetZCpY6YixNQxU1l4luck9FVmo48k3QicAoyT1A5cAvwNcKWkYcDLwDyAiFgh6WZgJbALmO+RR2aDz54duxgyvImihuEyF6ybO3Ouk8A+yiwpRMScElUnlDi+DfB9ntlgJRU1Xezcso2mMc2ph1s2vBqUmdVWSifynxbeChFOCDXgZS7MrDZSOpCfmXYCYx9fyitqEI7lOCmYWVWVWrCOCMZWPxwr4OYjM6uKdZdcnes3KEwIPYwosurznYKZZeqlJ59lxKSxFE0hcyKoS04KZpYdiREFRd4Cs775X8bMKi9lRNHG2x/wFpgNwP86ZlY5Kclg/cl/AREc8uevq1FQ1hduPjKzfZe2PhFARLdFzaz++U7BzPpt/XsuKLlg3b52JC9etpiWK1oYctkQWq5oYfGyxft0PiuP7xTMrM+2PPBHDjxpRvFdQIVGFC1etph5t82jY2cHAGu9i1rV+E7BzMoWewIkDjxpRkFFZecaLFiyoCshdPIuatVRVlKQtKScMjMbwFK2wHzx4fUVvTvobC5au3Vt6jHeRS17PSYFSftLOpjc8tcHSTo4+WoBDqtKhGZWWykjilZ/4B8gglFHTarIJTqbi9ZuXUukb7oIeBe1auitT+Ej5PZVPgx4kL3bZj4PfDO7sMys5noYUXREBU6/eNliFixZwLqt6xiiIezuZQsV76JWHT3eKUTElRExDfh0RLwyIqYlX6+JiG9UKUYzq6LHZ56d2YiiToV3Bj0lBO+iVl1ljT6KiK9LegPQkv+aiLiu1GskLQLOBDZGxLFJ2feBzh6qA4EtEXFcUncx8CFgN/CJiPjPPv4sZrYP2m+6l0lz3swrCysyWKMorSM5zdQxU1lz4ZqKX99KKyspSPoecDjwELk3bYAASiYF4BrgG/nHRMRf5p3zq8DW5PHRwGzgGHJNVb+QdKS35DTL3u6XdzJ0xH4U9Q5kuGBdOR3Gbi6qjXLnKbQCR0eU/1cSEfckHdJFJAl4H3BqUnQOcFNEbAeekLQaOBG4r9zrmVk/SAwtKNqxpYP9xhQuY1dZU8ZMSR1hNFRD2RN7mDJmCm2z2txcVAPlzlNYDhXdDOnNwNMR8WjyfCKwPq++PSkzsyykjCha882fQkTmCQGgbVYbzU3dt9psbmrm2nddy55L9rDmwjVOCDXS452CpNvINRMdAKyU9ACwvbM+Is7u53XnADfmXyrlmNS7EknzgHkAU6Z4eJpZn6R0ID856SQmrv8NLVUMo/MNv3P0ke8M6kdvzUdfqfQFJQ0D3g2ckFfcDt1mzE8CNqS9PiIWAgsBWltbvUuHWRk2HXQk47c8WlwRUbNb8rkz5zoJ1KHehqTe3dNXP6/5VuCRiGjPK7sVmC1puKRpwHTggX6e38wSf/ziTSAVJ4QKL0vhxesGjnJHH71AcXPOVmAp8KmIeDzlNTcCp5CbDd0OXBIRV5MbZZTfdERErJB0M7AS2AXM98gjs/7r2LCF5okHcWRhRQYjirx43cCicgYUSbqMXHPODeTa/2eT63heBZwfEadkGGNJra2tsXTp0lpc2qx+pfQbZLkFZssVLakjiTzHoH5JejAiWtPqyv0rOT0ivh0RL0TE80m7/hkR8X3goIpFamb9lzKi6E+/WJ75Fpil5hx48brGVO5fyh5J75M0JPl6X16dO3vNaiklGTx82oUQwStmHZP55UstUufF6xpTuUlhLnAusBF4Onn8fkkjgI9nFJuZ9SQlGQAQwat+fnnFLtNbJ3KpOQeejdyYykoKEfF4RJwVEeMiYnzyeHVEvBQR92YdpJnt9bt3Xpb5gnWdCheu6+xEzk8Mc2fOZeFZC5k6ZqoXrxsAeuxolvSZiPgXSV8npZkoIj6RZXC9cUezDSYb7/0jh7x5RnFFBomgtyWt3Ync2HrqaO5tSOrDyXe/85rVSOzJdRQfUlSR/fDSUktauxN54OoxKUTEbcn3awEkjYyIbdUIzMzIbYFZULRl1dMceGRRiqiIcpe0difywFXuHs2vl7SS5M5B0mskXZVpZGaDWUon8ooPfhUi9ikhFHYaf+ynH+v2vNTeyPnciTywlTt57X7gvcCtEfHapGx55+Y5teI+BRtwetgCc18VNg2lXh6l7pHsJa0Hln3pU+gSEevV/Q/Wy1CYVcjj007llWt+VVxRwX6DcpqGgihKDM1NzR5NNIiUO09hfbIdZ0jaT9Kn2dsJbWb99PjVvwKpOCFkMLy03M7hIDy8dBAr907ho8CV5Da+aQfuBOZnFZTZQLerYwfDRg6vyn7InUrtdlbIw00Ht3Inr22OiLkRcWhEHBIR74+IZ7IOzmxAkhg2cni3oh1bOjJNCJA+87iQO5Gtt53XUietdar15DWzhpLSifzo125j+kVnsl8VLp+229kZ08/gjkfv8O5n1qW35qP8oT2XAZdkGIvZwJSSDLaOnMCYFzcwvcqheLcz601vk9eu7Xws6cL852bWix6Gl46pwOnzl6Pwp3yrlL4ssu4lss3KsPqD/5j5gnXlLFRn1h+Z7bwhaZGkjZKWF5T/P0mrJK2Q9C955RdLWp3UnZZVXGZZefGxp0HiiO8u6F5RgWRQOBP5gp9dUDTnoGNnBwuWLChxBrPy9NbRnL83c7Ok5zurgIiI0T28/BrgG8B1eed7C3AO8OqI2C7pkKT8aHJbfB4DHAb8QtKR3qfZGobEqIKiSm2BmbYHcileqM72VY9/sRFxQESMTr6G5T0+oJeEQETcAzxbUHw+8E8RsT05ZmNSfg5wU0Rsj4gngNXAif36icyqKWWNoqduua+iW2CWu0gdeKE623fZbdya7kjgzZLul3S3pNcl5ROB9XnHtSdlRSTNk7RU0tJNmzZlHK5ZCSnJoP3IUyGCCe86eZ9Pn99cVM6EM/AcA6uMstc+quD1DgJOBl4H3CzplVC0OjCU6NiOiIXAQsgtiJdRnGbpehhRNKlClyhn4TqAsSPGMmq/UR59ZBVV7aTQDtwSuaVZH5C0BxiXlE/OO24SsKHKsZmVtPFN7+aQX/+4uKKCo4l62+0sX3NTM1e+40onAau4ajcf/QdwKoCkI4H9gM3ArcBsScMlTQOmAw9UOTazIlvu/j1IxQkhw+GlPSUEL1JnWcvsTkHSjcApwDhJ7eRmQy8CFiXDVHcA5yV3DSsk3QysBHYB8z3yyGqpcwvMA4sqKt9iWW5Hsheqs2rILClExJwSVe8vcXwb4F4yq72ULTA7Vq2n+cjK9BoUzkT2bmdWT6rdfGRWv1JGFG34wMUQUdGEUDgTuTgF5QzVUDcXWdVVu6PZrP70MKLosApfKq2pyLudWT3xnYINWi+PHp/5GkVQ3pwD73Zm9cJ3CjbobPz2jznko+9m/8KKDDqRy51z4E5kqxdOCjZo7N72MkNHjeCQwooKJ4P+zDlwJ7LVCycFGxwkhhYU7dq6jWGje96esq8K7wx6m3PgmchWb5wUbGBL6TN4+vIbOPTCOZn88XvOgTU6JwUbmFKSwa6m/Rm24yUOzfCy5Sxd7eYiq2cefWQDS8pcAwAiGLbjpcwvX2rpas85sEbhpGADwuZPfLEqw0t70zarjeam7v0UzU3NXPuua9lzyR7WXLjGCcHqmpuPrKG9vOZP7D9tAuMKK6qYCPJ1vuHnL2PhjmRrJIoa/eephNbW1li6dGmtw7BaSbkziN170JASM5TNDABJD0ZEa1qdm4+s8aT0G7yw5IHcFphOCGb7xEnBGkdKMthy0mkQwQGnvq7Ei8ysL5wUrP71MKLowN/8PNNL569b1HJFC4uXLc70ema15qRgdev5U86u6YiitGWu5902z4nBBjQnBas72+79HUiMvvu27hVVHl6aNju5Y2cHC5YsqFoMZtWWWVKQtEjSxmTrzc6ySyU9Kemh5OuMvLqLJa2WtErSaVnFZfUr9gRIjHzz8QUV1U0GnUrNTi5n1rJZo8ryTuEa4PSU8ssj4rjk6w4ASUcDs4FjktdcJalw/TIbyCQ0tPuf4/bHn6zZfAMoPTu5VLnZQJBZUoiIe4Bnyzz8HOCmiNgeEU8Aq4ETs4rN6khKJ/JzH/97iGD4tErve9Y3pWYne90iG8hq0afwcUl/SJqXDkrKJgLr845pT8qKSJonaamkpZs2bco6VstKDyOKDvr6FzO5ZF9HEs2dOZeFZy30jmg2qGQ6o1lSC3B7RBybPD8U2AwE8CVgQkR8UNI3gfsi4vrkuKuBOyLiRz2d3zOaG8/uMQcx9PktxRUZNxOl7YDmfZBtsKqbGc0R8XRE7I6IPcB32NtE1A5Mzjt0ErChmrFZtrZd98PcRjeFCaFKncgeSWRWnqouiCdpQkQ8lTx9F9A5MulW4AZJXwMOA6YDD1QzNsvGnm0vMWRUMyMLK6rcgeyRRGblySwpSLoROAUYJ6kduAQ4RdJx5JqP1gAfAYiIFZJuBlYCu4D5Eb1sbGv1Tyq6Fd3zYgdDRo6oeihTxkxh7da1qeVmtleWo4/mRMSEiGiKiEkRcXVEnBsRMyPi1RFxdt5dAxHRFhGHR8SMiPhZVnFZFaR0Ind89/sQUVZCKOwQ/thPP7bPS014JJFZebyfglVOymii3c2jGLrtBZpTDk9T2CG8dutavrX0W131nUtNAH3qIPY+B2bl8X4Ktu/ShpZC2f0Gi5ct7nqzHqIh7C6j5dAb35v1X92MPrKB5YUvfHmfF6wrXHSunIQA7iA2y4qbj6zPdrY/TdPkV3BAYUU/7jrThoqWwx3EZtlwUrC+kWgqKMrfAjO/KWjKmCmcMf0M7nj0jpLt+P35xO8OYrPsuPnIypMyoujl+3/fbQvMtP0HvrX0Wz3uR1DqE/9QDe1aWuL81vO91IRZlbij2XqW0mfwvaNG8vcfGVd0F/Dijhd55qVnej1lfiexl58wq76eOprdfGTpSowo0qUA22DrtqKhouXKbzLyUFGz+uKkYN08f+7HGH39t4rKWy6f2qc3/p4UNhnNnTnXScCsTjgpDFKFHcLn8SYuu2gxowuOG3KpSi4R0R/uJDarb04Kg1C3dvw9sOaitUD3N/1cMxGQdBALEfTe/zR2xFhG7Teq7NFHZlZfnBQGoc65AXFpcd34Tw5l8+jiCWRB9JoYmpuaufIdV/pN36yBOSkMAL3NDSh8nrsz6O78t47i3970IlB6RnEQTB0z1XcBZgOYh6Q2uLQhnaWk3RlAflNRz7zekNnA4CGpDaSvn/pf3PFirwnh/qv258SNLxeVl5sMwB3EZoOF7xTqSF8+9ZfjtJXN/Pzm4nN1JoOemoLcNGQ2cPlOoUH0d3G4QsN3wMv/CND9XPl3Bm4KMrM0ma19JGmRpI2SlqfUfVpSSBqXV3axpNWSVkk6Lau4qqlwB7HCHcMK6ysxFyAu7UwIew3/XPeE4KYgMyslyzuFa4BvANflF0qaDLwNWJdXdjQwGzgGOAz4haQjG3mf5rQdxPJ3DEurL3cuQKGxI8ay+e+K1xx621828+jJ4/mQm4LMrEyZJYWIuEdSS0rV5cBngJ/klZ0D3BQR24EnJK0GTgTuyyq+virsAC58Yy2sT+sA7tjZwYIlC5g7c25qU1E5cwEK5UYUdU8IHce/keYH7+Wuvv6QZjboVbVPQdLZwJMR8Xt1X3BtIvCbvOftSVnaOeYB8wCmTKnORiv9+dRfSudicKX2EehtLkDn8/svfpJDX96VcoIoez9kM7NCVUsKkpqBBcDb06pTylI/LkfEQmAh5EYfVSzAHqR9qu/tU38pnYvBlVpPqLcO4K2XL+KqTxYvWNefXc/MzApV807hcGAa0HmXMAn4raQTyd0ZTM47dhKwIatA+joXoNQn/94+9RfK7+Btm9WWuo9AqQ7gnU9tpumw8YwprHAyMLMKynSeQtKncHtEHJtStwZojYjNko4BbiDXj3AYsASY3ltHc3/mKfRnLkCpdv7OT/WlRg4VLg7XWz9EyQ7glL0N8rfANDPri5rMU5B0I3AKME5SO3BJRFyddmxErJB0M7AS2AXMz2rkUX/mAqR1AJfzqb+3xeF63UcgJRm8vOxR9j/2iNT2NjOzfZXZPIWImBMREyKiKSImFSaEiGiJiM15z9si4vCImBERP8sqrv5sFA97O4DT9gmeO3MuC89aWLl9hFP2Q352wVcggv2PPaJ/5zQzK8Ogm9Hc3w1jeusArsTuYS8dOpURG7snrd1Nwxm642UO3qczm5mVJ7M7hXrVNquN5qa+DdrMegbw5i99C6SihEAEQ3cUL2RnZpaVQZcU0pp6zm89v8fn+9QU1IOXHtsAEuO+8LHuFREeVWRmNeFVUmsg9gQampKPG/jfwswaR0+jjwbdnULNSUUJYedzLzohmFldcFKolpQRRc/ddi9E0HTgyBoFZWbWnZNCxnaNPbQoGWz9wAUQwUFnvrFGUZmZpRt0Q1Kr5fkrFjH6og8V/4IjipeqMDOrE04KFbZ95WMMP+YIRhdWuM/AzBqAk0KFxK7dqGkYw4sqnAzMrHE4KVSCVLQWUezchYYNrUk4Zmb95Y7mfZEyoujlxzdAhBOCmTUkJ4X+OPPMomSw5aaf5RasmzahRkGZme07J4W+WLQolwx++tOuoo6PXAQRHPiXp9cwMDOzynCfQjnWrYOpU7uXHXwwPPOM90M2swHFSaEn27fD/vsXl3tEkZkNUJk1H0laJGmjpOV5ZV+S9AdJD0m6U9JheXUXS1otaZWk07KKq2xScULYs8cJwcwGtCz7FK4BChvavxwRr46I44DbgS8ASDoamA0ck7zmKkm1Gb5z2mnF22Bu25ZLBinbY5qZDSRZbsd5D/BsQdnzeU9HQtemx+cAN0XE9oh4AlgNnJhVbKm+8pXcm/6dd+4tW7Uqlwya3XNgZoND1fsUJLUBfw1sBd6SFE8EfpN3WHtSlvb6ecA8gClTpux7QI89BkcU7Hv8y1/CW96SfryZ2QBW9SGpEbEgIiYDi4GPJ8Vp7TKpjfcRsTAiWiOidfz48f0P5LnnYPz47gnhu9/N3Rk4IZjZIFXLeQo3AO9JHrcDk/PqJgEbMrtye3tuSOnmzUkkN+SSwQc+kNklzcwaQVWTgqTpeU/PBh5JHt8KzJY0XNI0YDrwQGaBHHRQ7vsll+SSwZw5mV3KzKyRZNanIOlG4BRgnKR24BLgDEkzgD3AWuCjABGxQtLNwEpgFzA/InZnFRsjR3poqZlZCkUDvzm2trbG0qVLax2GmVlDkfRgRLSm1XntIzMz6+KkYGZmXZwUzMysi5OCmZl1cVIwM7MuTgpmZtbFScHMzLo09DwFSZvITYLrr3HA5gqFk7VGihUaK17Hmp1GireRYoV9i3dqRKQuHtfQSWFfSVpaagJHvWmkWKGx4nWs2WmkeBspVsguXjcfmZlZFycFMzPrMtiTwsJaB9AHjRQrNFa8jjU7jRRvI8UKGcU7qPsUzMysu8F+p2BmZnmcFMzMrMugSAqSFknaKGl5XtnBku6S9Gjy/aBaxthJ0mRJv5L0sKQVki5Iyus13v0lPSDp90m8lyXldRkvgKShkn4n6fbkeT3HukbSMkkPSVqalNVlvJIOlPRDSY8kf7+vr+NYZyS/086v5yVdWMfxXpT8/1ou6cbk/10msQ6KpABcA5xeUPZZYElETAeWJM/rwS7gUxHxKuBkYL6ko6nfeLcDp0bEa4DjgNMlnUz9xgtwAfBw3vN6jhXgLRFxXN6Y9HqN90rg5xFxFPAacr/juow1IlYlv9PjgBOADuDH1GG8kiYCnwBaI+JYYCgwm6xijYhB8QW0AMvznq8CJiSPJwCrah1jibh/ArytEeIFmoHfAifVa7zApOQ/0KnA7fX+twCsAcYVlNVdvMBo4AmSwSv1HGtK7G8Hfl2v8QITgfXAweS2UL49iTmTWAfLnUKaQyPiKYDk+yE1jqeIpBbgtcD91HG8SXPMQ8BG4K6IqOd4rwA+Q26f8E71GitAAHdKelDSvKSsHuN9JbAJ+G7SNPfvkkZSn7EWmg3cmDyuu3gj4kngK8A64Clga0TcSUaxDuakUNckjQJ+BFwYEc/XOp6eRMTuyN2GTwJOlHRsjUNKJelMYGNEPFjrWPrgjRFxPPAOck2J/6fWAZUwDDge+FZEvBbYRh00vfRG0n7A2cAPah1LKUlfwTnANOAwYKSk92d1vcGcFJ6WNAEg+b6xxvF0kdRELiEsjohbkuK6jbdTRGwB/otc/009xvtG4GxJa4CbgFMlXU99xgpARGxIvm8k1+Z9IvUZbzvQntwlAvyQXJKox1jzvQP4bUQ8nTyvx3jfCjwREZsiYidwC/AGMop1MCeFW4HzksfnkWu7rzlJAq4GHo6Ir+VV1Wu84yUdmDweQe4P+BHqMN6IuDgiJkVEC7kmg19GxPupw1gBJI2UdEDnY3LtyMupw3gj4k/AekkzkqJZwErqMNYCc9jbdAT1Ge864GRJzcn7wyxynfjZxFrrTpQqddTcSK4tbie5TzQfAsaS63B8NPl+cK3jTGJ9E7l25D8ADyVfZ9RxvK8GfpfEuxz4QlJel/HmxX0Kezua6zJWcu30v0++VgAL6jze44Clyd/CfwAH1WusSbzNwDPAmLyyuowXuIzch63lwPeA4VnF6mUuzMysy2BuPjIzswJOCmZm1sVJwczMujgpmJlZFycFMzPr4qRg1k+S3iUpJB1V61jMKsVJwaz/5gD3kpsIZzYgOCmY9UOyNtUbyU2EnJ2UDZF0VbLu/e2S7pD03qTuBEl3Jwvb/Wfn8gRm9cZJwax/3klu74A/As9KOh54N7kl2mcCHwZeD11rWX0deG9EnAAsAtpqELNZr4bVOgCzBjWH3DLckFtcbw7QBPwgIvYAf5L0q6R+BnAscFdu6RqGklt2xazuOCmY9ZGkseQ26TlWUpB7kw9yq5imvgRYERGvr1KIZv3m5iOzvnsvcF1ETI2IloiYTG7Xsc3Ae5K+hUPJLboHuR2yxkvqak6SdEwtAjfrjZOCWd/Nofiu4EfkNkBpJ7eS5bfJ7Zi3NSJ2kEsk/yzp9+RWvn1D1aI16wOvkmpWQZJGRcSLSRPTA+R2TvtTreMyK5f7FMwq6/Zk06H9gC85IVij8Z2CmZl1cZ+CmZl1cVIwM7MuTgpmZtbFScHMzLo4KZiZWZf/D+GeT5SE3ZIzAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Visualise the Linear Regression Result\n",
    "plt.scatter(X_train, y_train, color = 'green') \n",
    "  \n",
    "plt.plot(X_test, LinReg.predict(X_test), color = 'blue') \n",
    "plt.plot(X_train, LinReg.predict(X_train), color = 'red') \n",
    "plt.title('Linear Regression') \n",
    "plt.xlabel('Age') \n",
    "plt.ylabel('Height') \n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "160c78b0",
   "metadata": {},
   "source": [
    "#### （2）使用多项式线性回归模型进行预测和评估"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "28856263",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Add the polynomial term to the equation/model\n",
    "from sklearn.preprocessing import PolynomialFeatures \n",
    "\n",
    "polynom = PolynomialFeatures(degree = 2) #多项式算到平方。——1+ax+bx^2\n",
    "X_polynom = polynom.fit_transform(X_train)#将原始数据转换为多项式特征表示"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e184fe83",
   "metadata": {},
   "source": [
    "`X_polynom = polynom.fit_transform(X_train)` 这行代码的意思是使用多项式回归模型对训练数据 `X_train` 进行拟合，并将拟合后的数据存储在变量 `X_polynom` 中。\n",
    "\n",
    "具体来说，`polynom` 是一个多项式回归模型的实例化对象，`fit_transform()` 是该对象的一个方法，用于对输入数据进行拟合和转换。该方法会返回一个新的数组，其中包含了经过多项式变换后的训练数据。\n",
    "\n",
    "通过执行这行代码，你可以将原始的训练数据 `X_train` 转换为多项式特征表示，以便后续的机器学习算法可以更好地处理这些数据。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "5f8c3449",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Fit the Polynomial Regression Model \n",
    "PolyReg = LinearRegression() \n",
    "PolyReg.fit(X_polynom, y_train)#拟合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "5ba58c3e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9892511710983519\n"
     ]
    }
   ],
   "source": [
    "#用r2得分进行评估\n",
    "from sklearn.metrics import r2_score\n",
    "score2=r2_score(y_test,PolyReg.predict(polynom.fit_transform(X_test)))#将测试集X_test也转化成多项式表示形式\n",
    "print(score2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "a6022e13",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Visualise the Polynomial Regression Results \n",
    "plt.scatter(X_train, y_train, color = 'green') \n",
    "#plt.scatter(X_test, y_test, color = 'green') \n",
    "\n",
    "plt.plot(X_train, PolyReg.predict(polynom.fit_transform(X_train)), color = 'red') #PolyReg.predict(polynom.fit_transform(X_train))——多项式线性模型对X_train的预测\n",
    "#plt.plot(X_test, PolyReg.predict(polynom.fit_transform(X_test)), color = 'blue') #PolyReg.predict(polynom.fit_transform(X_train))——多项式线性模型对X_test的预测\n",
    "plt.title('Polynomial Regression')\n",
    "plt.xlabel('Age') \n",
    "plt.ylabel('Height') \n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "83eff592",
   "metadata": {},
   "source": [
    "#### （3）调整模型参数对多项式模型进行优化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "80fe2d3b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9927634092096052\n"
     ]
    }
   ],
   "source": [
    "# Add the polynomial term to the equation/model\n",
    "from sklearn.preprocessing import PolynomialFeatures \n",
    "\n",
    "polynom = PolynomialFeatures(degree = 3) #多项式算到平方。——1+ax+bx^2\n",
    "X_polynom = polynom.fit_transform(X_train)#将原始数据转换为多项式特征表示\n",
    "#Fit the Polynomial Regression Model \n",
    "PolyReg = LinearRegression() \n",
    "PolyReg.fit(X_polynom, y_train)#拟合\n",
    "#用r2得分进行评估\n",
    "from sklearn.metrics import r2_score\n",
    "score2=r2_score(y_test,PolyReg.predict(polynom.fit_transform(X_test)))#将测试集X_test也转化成多项式表示形式\n",
    "print(score2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "9af362c8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([158.21534659])"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "PolyReg.predict(polynom.fit_transform([[50]]))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dc67c9d9",
   "metadata": {},
   "source": [
    "## 应用案例（二）NBA球员数据分析（包含1996年至2021年季节的所有数据）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "id": "305fbaed",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import necessary libraries \n",
    "import pandas as pd \n",
    "import numpy as np \n",
    "import matplotlib.pyplot as plt \n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "id": "57b5032b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import the Height Weight Dataset \n",
    "#https://www.kaggle.com/datasets/justinas/nba-players-data\n",
    "data = pd.read_csv('./kaggle-data/nba_all_seasons.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "id": "e6de1c2b",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>player_name</th>\n",
       "      <th>team_abbreviation</th>\n",
       "      <th>age</th>\n",
       "      <th>player_height</th>\n",
       "      <th>player_weight</th>\n",
       "      <th>college</th>\n",
       "      <th>country</th>\n",
       "      <th>draft_year</th>\n",
       "      <th>draft_round</th>\n",
       "      <th>...</th>\n",
       "      <th>pts</th>\n",
       "      <th>reb</th>\n",
       "      <th>ast</th>\n",
       "      <th>net_rating</th>\n",
       "      <th>oreb_pct</th>\n",
       "      <th>dreb_pct</th>\n",
       "      <th>usg_pct</th>\n",
       "      <th>ts_pct</th>\n",
       "      <th>ast_pct</th>\n",
       "      <th>season</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>Randy Livingston</td>\n",
       "      <td>HOU</td>\n",
       "      <td>22.0</td>\n",
       "      <td>193.04</td>\n",
       "      <td>94.800728</td>\n",
       "      <td>Louisiana State</td>\n",
       "      <td>USA</td>\n",
       "      <td>1996</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>3.9</td>\n",
       "      <td>1.5</td>\n",
       "      <td>2.4</td>\n",
       "      <td>0.3</td>\n",
       "      <td>0.042</td>\n",
       "      <td>0.071</td>\n",
       "      <td>0.169</td>\n",
       "      <td>0.487</td>\n",
       "      <td>0.248</td>\n",
       "      <td>1996-97</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>Gaylon Nickerson</td>\n",
       "      <td>WAS</td>\n",
       "      <td>28.0</td>\n",
       "      <td>190.50</td>\n",
       "      <td>86.182480</td>\n",
       "      <td>Northwestern Oklahoma</td>\n",
       "      <td>USA</td>\n",
       "      <td>1994</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>3.8</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.3</td>\n",
       "      <td>8.9</td>\n",
       "      <td>0.030</td>\n",
       "      <td>0.111</td>\n",
       "      <td>0.174</td>\n",
       "      <td>0.497</td>\n",
       "      <td>0.043</td>\n",
       "      <td>1996-97</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>George Lynch</td>\n",
       "      <td>VAN</td>\n",
       "      <td>26.0</td>\n",
       "      <td>203.20</td>\n",
       "      <td>103.418976</td>\n",
       "      <td>North Carolina</td>\n",
       "      <td>USA</td>\n",
       "      <td>1993</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>8.3</td>\n",
       "      <td>6.4</td>\n",
       "      <td>1.9</td>\n",
       "      <td>-8.2</td>\n",
       "      <td>0.106</td>\n",
       "      <td>0.185</td>\n",
       "      <td>0.175</td>\n",
       "      <td>0.512</td>\n",
       "      <td>0.125</td>\n",
       "      <td>1996-97</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>George McCloud</td>\n",
       "      <td>LAL</td>\n",
       "      <td>30.0</td>\n",
       "      <td>203.20</td>\n",
       "      <td>102.058200</td>\n",
       "      <td>Florida State</td>\n",
       "      <td>USA</td>\n",
       "      <td>1989</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>10.2</td>\n",
       "      <td>2.8</td>\n",
       "      <td>1.7</td>\n",
       "      <td>-2.7</td>\n",
       "      <td>0.027</td>\n",
       "      <td>0.111</td>\n",
       "      <td>0.206</td>\n",
       "      <td>0.527</td>\n",
       "      <td>0.125</td>\n",
       "      <td>1996-97</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>George Zidek</td>\n",
       "      <td>DEN</td>\n",
       "      <td>23.0</td>\n",
       "      <td>213.36</td>\n",
       "      <td>119.748288</td>\n",
       "      <td>UCLA</td>\n",
       "      <td>USA</td>\n",
       "      <td>1995</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>2.8</td>\n",
       "      <td>1.7</td>\n",
       "      <td>0.3</td>\n",
       "      <td>-14.1</td>\n",
       "      <td>0.102</td>\n",
       "      <td>0.169</td>\n",
       "      <td>0.195</td>\n",
       "      <td>0.500</td>\n",
       "      <td>0.064</td>\n",
       "      <td>1996-97</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12839</th>\n",
       "      <td>12839</td>\n",
       "      <td>Joel Embiid</td>\n",
       "      <td>PHI</td>\n",
       "      <td>29.0</td>\n",
       "      <td>213.36</td>\n",
       "      <td>127.005760</td>\n",
       "      <td>Kansas</td>\n",
       "      <td>Cameroon</td>\n",
       "      <td>2014</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>33.1</td>\n",
       "      <td>10.2</td>\n",
       "      <td>4.2</td>\n",
       "      <td>8.8</td>\n",
       "      <td>0.057</td>\n",
       "      <td>0.243</td>\n",
       "      <td>0.370</td>\n",
       "      <td>0.655</td>\n",
       "      <td>0.233</td>\n",
       "      <td>2022-23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12840</th>\n",
       "      <td>12840</td>\n",
       "      <td>John Butler Jr.</td>\n",
       "      <td>POR</td>\n",
       "      <td>20.0</td>\n",
       "      <td>213.36</td>\n",
       "      <td>86.182480</td>\n",
       "      <td>Florida State</td>\n",
       "      <td>USA</td>\n",
       "      <td>Undrafted</td>\n",
       "      <td>Undrafted</td>\n",
       "      <td>...</td>\n",
       "      <td>2.4</td>\n",
       "      <td>0.9</td>\n",
       "      <td>0.6</td>\n",
       "      <td>-16.1</td>\n",
       "      <td>0.012</td>\n",
       "      <td>0.065</td>\n",
       "      <td>0.102</td>\n",
       "      <td>0.411</td>\n",
       "      <td>0.066</td>\n",
       "      <td>2022-23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12841</th>\n",
       "      <td>12841</td>\n",
       "      <td>John Collins</td>\n",
       "      <td>ATL</td>\n",
       "      <td>25.0</td>\n",
       "      <td>205.74</td>\n",
       "      <td>102.511792</td>\n",
       "      <td>Wake Forest</td>\n",
       "      <td>USA</td>\n",
       "      <td>2017</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>13.1</td>\n",
       "      <td>6.5</td>\n",
       "      <td>1.2</td>\n",
       "      <td>-0.2</td>\n",
       "      <td>0.035</td>\n",
       "      <td>0.180</td>\n",
       "      <td>0.168</td>\n",
       "      <td>0.593</td>\n",
       "      <td>0.052</td>\n",
       "      <td>2022-23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12842</th>\n",
       "      <td>12842</td>\n",
       "      <td>Jericho Sims</td>\n",
       "      <td>NYK</td>\n",
       "      <td>24.0</td>\n",
       "      <td>208.28</td>\n",
       "      <td>113.398000</td>\n",
       "      <td>Texas</td>\n",
       "      <td>USA</td>\n",
       "      <td>2021</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>3.4</td>\n",
       "      <td>4.7</td>\n",
       "      <td>0.5</td>\n",
       "      <td>-6.7</td>\n",
       "      <td>0.117</td>\n",
       "      <td>0.175</td>\n",
       "      <td>0.074</td>\n",
       "      <td>0.780</td>\n",
       "      <td>0.044</td>\n",
       "      <td>2022-23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12843</th>\n",
       "      <td>12843</td>\n",
       "      <td>JaMychal Green</td>\n",
       "      <td>GSW</td>\n",
       "      <td>33.0</td>\n",
       "      <td>205.74</td>\n",
       "      <td>102.965384</td>\n",
       "      <td>Alabama</td>\n",
       "      <td>USA</td>\n",
       "      <td>Undrafted</td>\n",
       "      <td>Undrafted</td>\n",
       "      <td>...</td>\n",
       "      <td>6.4</td>\n",
       "      <td>3.6</td>\n",
       "      <td>0.9</td>\n",
       "      <td>-8.2</td>\n",
       "      <td>0.087</td>\n",
       "      <td>0.164</td>\n",
       "      <td>0.169</td>\n",
       "      <td>0.650</td>\n",
       "      <td>0.094</td>\n",
       "      <td>2022-23</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>12844 rows × 22 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       Unnamed: 0       player_name team_abbreviation   age  player_height  \\\n",
       "0               0  Randy Livingston               HOU  22.0         193.04   \n",
       "1               1  Gaylon Nickerson               WAS  28.0         190.50   \n",
       "2               2      George Lynch               VAN  26.0         203.20   \n",
       "3               3    George McCloud               LAL  30.0         203.20   \n",
       "4               4      George Zidek               DEN  23.0         213.36   \n",
       "...           ...               ...               ...   ...            ...   \n",
       "12839       12839       Joel Embiid               PHI  29.0         213.36   \n",
       "12840       12840   John Butler Jr.               POR  20.0         213.36   \n",
       "12841       12841      John Collins               ATL  25.0         205.74   \n",
       "12842       12842      Jericho Sims               NYK  24.0         208.28   \n",
       "12843       12843    JaMychal Green               GSW  33.0         205.74   \n",
       "\n",
       "       player_weight                college   country draft_year draft_round  \\\n",
       "0          94.800728        Louisiana State       USA       1996           2   \n",
       "1          86.182480  Northwestern Oklahoma       USA       1994           2   \n",
       "2         103.418976         North Carolina       USA       1993           1   \n",
       "3         102.058200          Florida State       USA       1989           1   \n",
       "4         119.748288                   UCLA       USA       1995           1   \n",
       "...              ...                    ...       ...        ...         ...   \n",
       "12839     127.005760                 Kansas  Cameroon       2014           1   \n",
       "12840      86.182480          Florida State       USA  Undrafted   Undrafted   \n",
       "12841     102.511792            Wake Forest       USA       2017           1   \n",
       "12842     113.398000                  Texas       USA       2021           2   \n",
       "12843     102.965384                Alabama       USA  Undrafted   Undrafted   \n",
       "\n",
       "       ...   pts   reb  ast  net_rating  oreb_pct  dreb_pct  usg_pct  ts_pct  \\\n",
       "0      ...   3.9   1.5  2.4         0.3     0.042     0.071    0.169   0.487   \n",
       "1      ...   3.8   1.3  0.3         8.9     0.030     0.111    0.174   0.497   \n",
       "2      ...   8.3   6.4  1.9        -8.2     0.106     0.185    0.175   0.512   \n",
       "3      ...  10.2   2.8  1.7        -2.7     0.027     0.111    0.206   0.527   \n",
       "4      ...   2.8   1.7  0.3       -14.1     0.102     0.169    0.195   0.500   \n",
       "...    ...   ...   ...  ...         ...       ...       ...      ...     ...   \n",
       "12839  ...  33.1  10.2  4.2         8.8     0.057     0.243    0.370   0.655   \n",
       "12840  ...   2.4   0.9  0.6       -16.1     0.012     0.065    0.102   0.411   \n",
       "12841  ...  13.1   6.5  1.2        -0.2     0.035     0.180    0.168   0.593   \n",
       "12842  ...   3.4   4.7  0.5        -6.7     0.117     0.175    0.074   0.780   \n",
       "12843  ...   6.4   3.6  0.9        -8.2     0.087     0.164    0.169   0.650   \n",
       "\n",
       "       ast_pct   season  \n",
       "0        0.248  1996-97  \n",
       "1        0.043  1996-97  \n",
       "2        0.125  1996-97  \n",
       "3        0.125  1996-97  \n",
       "4        0.064  1996-97  \n",
       "...        ...      ...  \n",
       "12839    0.233  2022-23  \n",
       "12840    0.066  2022-23  \n",
       "12841    0.052  2022-23  \n",
       "12842    0.044  2022-23  \n",
       "12843    0.094  2022-23  \n",
       "\n",
       "[12844 rows x 22 columns]"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "id": "35c0a175",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Unnamed: 0',\n",
       " 'player_name',\n",
       " 'team_abbreviation',\n",
       " 'age',\n",
       " 'player_height',\n",
       " 'player_weight',\n",
       " 'college',\n",
       " 'country',\n",
       " 'draft_year',\n",
       " 'draft_round',\n",
       " 'draft_number',\n",
       " 'gp',\n",
       " 'pts',\n",
       " 'reb',\n",
       " 'ast',\n",
       " 'net_rating',\n",
       " 'oreb_pct',\n",
       " 'dreb_pct',\n",
       " 'usg_pct',\n",
       " 'ts_pct',\n",
       " 'ast_pct',\n",
       " 'season']"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(data.columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "id": "6d32e0cc",
   "metadata": {},
   "outputs": [
    {
     "ename": "IndentationError",
     "evalue": "unexpected indent (Temp/ipykernel_1232/3326912682.py, line 2)",
     "output_type": "error",
     "traceback": [
      "\u001b[1;36m  File \u001b[1;32m\"C:\\Users\\86185\\AppData\\Local\\Temp/ipykernel_1232/3326912682.py\"\u001b[1;36m, line \u001b[1;32m2\u001b[0m\n\u001b[1;33m    'player_name',姓名\u001b[0m\n\u001b[1;37m    ^\u001b[0m\n\u001b[1;31mIndentationError\u001b[0m\u001b[1;31m:\u001b[0m unexpected indent\n"
     ]
    }
   ],
   "source": [
    "'Unnamed: 0',\n",
    " 'player_name',姓名\n",
    " 'team_abbreviation',球员所效力球队的缩写名称(赛季末)\n",
    " 'age',年龄\n",
    " 'player_height',身高\n",
    " 'player_weight',体重\n",
    " 'college',球员就读的大学名称\n",
    " 'country',球员出生的国家名称(不一定是国籍)\n",
    " 'draft_year',选秀当年\n",
    " 'draft_round',选秀选手被选中了\n",
    " 'draft_number',选秀顺位\n",
    " 'gp',表示球员在某个赛季或某个时间段内参加的比赛场次。\n",
    " 'pts', 得分。这是球员在每场比赛中获得的平均得分。\n",
    " 'reb',篮板。这是球员在每场比赛中获得的平均篮板数。\n",
    " 'ast',助攻。这是球员在每场比赛中送出的平均助攻数。\n",
    " 'net_rating',净效率。这是衡量球员对球队正负影响的统计数据。正值表示球员在场时球队得分多于失分，负值表示球员出场时球队失分多于得分。\n",
    " 'oreb_pct',前场篮板百分比。这是球员抢到前场篮板球的比率。\n",
    " 'dreb_pct',后场篮板百分比。这是球员抢到后场篮板球的比率。\n",
    " 'usg_pct',使用率。这是衡量球员在进攻中对球的控制程度的统计数据。它等于球员的投篮次数、助攻次数和失误次数之和除以球队的总出手次数。\n",
    " 'ts_pct',真实命中率。这是衡量球员投篮效率的统计数据。它等于球员的得分除以他出手的次数。\n",
    " 'ast_pct',助攻率。这是衡量球员助攻能力的统计数据。它等于球员的助攻次数除以球队的总助攻次数。\n",
    " 'season'赛季\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "id": "2cd1d4f4",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.array(data[\"age\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "id": "b77c5025",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = x.reshape(-1,1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "id": "a24b594b",
   "metadata": {},
   "outputs": [],
   "source": [
    "y = data[\"player_weight\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "id": "934cf32f",
   "metadata": {},
   "outputs": [],
   "source": [
    "#Split the Dataset into Training and Test Dataset\n",
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "id": "efba5c81",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 135,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Add the polynomial term to the equation/model\n",
    "from sklearn.preprocessing import PolynomialFeatures \n",
    "\n",
    "polynom = PolynomialFeatures(degree = 3) \n",
    "X_polynom = polynom.fit_transform(X_train)#将原始数据转换为多项式特征表示\n",
    "#Fit the Polynomial Regression Model \n",
    "PolyReg = LinearRegression() \n",
    "PolyReg.fit(X_polynom, y_train)#拟合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "id": "42aed397",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0028770476787093324\n"
     ]
    }
   ],
   "source": [
    "#用r2得分进行评估\n",
    "from sklearn.metrics import r2_score\n",
    "score2=r2_score(y_test,PolyReg.predict(polynom.fit_transform(X_test)))#将测试集X_test也转化成多项式表示形式\n",
    "print(score2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "id": "d8d9f9a0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Visualise the Polynomial Regression Results \n",
    "plt.scatter(X_train, y_train, color = 'green') \n",
    "#plt.scatter(X_test, y_test, color = 'green') \n",
    "\n",
    "plt.plot(X_train, PolyReg.predict(polynom.fit_transform(X_train)), color = 'red') #PolyReg.predict(polynom.fit_transform(X_train))——多项式线性模型对X_train的预测\n",
    "#plt.plot(X_test, PolyReg.predict(polynom.fit_transform(X_test)), color = 'blue') #PolyReg.predict(polynom.fit_transform(X_train))——多项式线性模型对X_test的预测\n",
    "plt.title('Polynomial Regression')\n",
    "plt.xlabel('Age') \n",
    "plt.ylabel('Height') \n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5d6b7ea3",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
